﻿--***SERVIDOR BRAHM***--

--Creación de la base de datos 
create database UNICEF_BDD


--Creación de las tablas que componen la vista ESTADOS
create table ESTADO_VER(
ID_ESTADO int,
NOMBRE_ESTADO  varchar(30))

--Llaves Primarias, foraneas y reglas de negocio
alter table ESTADO_VER add primary key (ID_ESTADO)

alter table ESTADO_VER add constraint nombre_veracruz check(Upper(NOMBRE_ESTADO) like upper('VERACRUZ'))

--Creación de procedimientos almacenados
CREATE PROCEDURE in_estadover
@ID_ESTADO int,
@NOMBRE_ESTADO varchar(30)
AS
insert into ESTADO_VER
values (@ID_ESTADO,@NOMBRE_ESTADO)

--Definicion del procedimiento remoto
create existing table in_estadotab
(
ID_ESTADO int,
NOMBRE_ESTADO varchar(30)
)
external procedure at "ASEREPLICADO.UNICEF_BDD.dbo.in_estadotab"

create existing table in_estadotlax
(
ID_ESTADO int,
NOMBRE_ESTADO varchar(30)
)
external procedure at "ASEREPLICADO.UNICEF_BDD.dbo.in_estadotlax"

--Creación de proxy tables
create existing table ESTADO_TAB
(
ID_ESTADO int,
NOMBRE_ESTADO varchar(30)
)external table at "ASEREPLICADO.UNICEF_BDD.dbo.ESTADO_TAB"

create existing table ESTADO_TLAX
(
ID_ESTADO int,
NOMBRE_ESTADO varchar(30)
)external table at "ASEREPLICADO.UNICEF_BDD.dbo.ESTADO_TLAX"

--Creación de la vista ESTADOS
create view ESTADOS
as
(select * from ESTADO_VER)
union
(select * from ESTADO_TAB)
UNION
(select * from ESTADO_TLAX)


--Creación de procedimientos 
CREATE PROCEDURE in_estadover
@ID_ESTADO int,
@NOMBRE_ESTADO varchar(30)
AS
insert into ESTADO_VER
values (@ID_ESTADO,@NOMBRE_ESTADO)

--Definicion del procedimiento remoto
create existing table in_estadotab
(
ID_ESTADO int,
NOMBRE_ESTADO varchar(30)
)
external procedure at "ASEREPLICADO.UNICEF_BDD.dbo.in_estadotab"

create existing table in_estadotlax
(
ID_ESTADO int,
NOMBRE_ESTADO varchar(30)
)
external procedure at "ASEREPLICADO.UNICEF_BDD.dbo.in_estadotlax"


--Creación de proxy tables
create existing table ESTADO_TAB
(
ID_ESTADO int,
NOMBRE_ESTADO varchar(30)
)external table at "ASEREPLICADO.UNICEF_BDD.dbo.ESTADO_TAB"

create existing table ESTADO_TLAX
(
ID_ESTADO int,
NOMBRE_ESTADO varchar(30)
)external table at "ASEREPLICADO.UNICEF_BDD.dbo.ESTADO_TLAX"

--Creación vista ESTADOS
create view ESTADOS
as
(select * from ESTADO_TAB)
union
(select * from ESTADO_TLAX)
union
(select * from ESTADO_VER)

--Creación de procedimiento para insertar datos en la vista ESTADO
create procedure inserta_estado(@ID_ESTADO int,@NOMBRE_ESTADO varchar(30))
as
begin
IF (UPPER(@NOMBRE_ESTADO)=UPPER('VERACRUZ')) 
INSERT INTO ESTADO_VER(ID_ESTADO,NOMBRE_ESTADO) VALUES(@ID_ESTADO,@NOMBRE_ESTADO)
else 
IF (UPPER(@NOMBRE_ESTADO)=UPPER('TLAXCALA')) 
INSERT INTO ESTADO_TLAX(ID_ESTADO,NOMBRE_ESTADO) VALUES(@ID_ESTADO,@NOMBRE_ESTADO) 
else 
IF (UPPER(@NOMBRE_ESTADO)=UPPER('TABASCO')) 
INSERT INTO ESTADO_TAB(ID_ESTADO,NOMBRE_ESTADO) VALUES(@ID_ESTADO,@NOMBRE_ESTADO)
end;

--Creación del trigger para insertar datos en la vista ESTADOS
create trigger trgr_estados on ESTADOS
instead of insert as
declare @ID_ESTADO int
declare @NOMBRE_ESTADO varchaR(30)
begin
select @ID_ESTADO=ID_ESTADO,@NOMBRE_ESTADO=NOMBRE_ESTADO
from inserted
exec inserta_estado @ID_ESTADO,@NOMBRE_ESTADO
end






--Creación de las tablas que componen la vista ORFANATORIOS
create table ORF_VER(
ID_ORFANATORIO int,
ID_ESTADO int,
NOMBRE_ORFANATORIO varchar(50),
DOM_ORFANATORIO varchar(50)
)

--Llaves Primarias, foraneas y reglas de negocio
alter table ORF_VER add primary key(ID_ORFANATORIO)
alter table ORF_VER add foreign key(ID_ESTADO) references ESTADO_VER(ID_ESTADO)

--Creación de procedimientos 
CREATE PROCEDURE in_orfver
@ID_ORFANATORIO int,
@ID_ESTADO int,
@NOMBRE_ORFANATORIO varchar(50),
@DOM_ORFANATORIO varchar(50)
AS
insert into ORF_VER
values (@ID_ORFANATORIO,@ID_ESTADO,@NOMBRE_ORFANATORIO,@DOM_ORFANATORIO)

--Creación de procedimientos remotos
create existing table in_orftab
(
ID_ORFANATORIO int,
ID_ESTADO int,
NOMBRE_ORFANATORIO varchar(50),
DOM_ORFANATORIO varchar(50)
)
external procedure at "ASEREPLICADO.UNICEF_BDD.dbo.in_orftab"

create existing table in_orftlax
(
ID_ORFANATORIO int,
ID_ESTADO int,
NOMBRE_ORFANATORIO varchar(50),
DOM_ORFANATORIO varchar(50)
)
external procedure at "ASEREPLICADO.UNICEF_BDD.dbo.in_orftlax"

--Creación de las proxytables
create existing table ORF_TAB
(
ID_ORFANATORIO int,
ID_ESTADO int,
NOMBRE_ORFANATORIO varchar(50),
DOM_ORFANATORIO varchar(50)
)
external table at "ASEREPLICADO.UNICEF_BDD.dbo.ORF_TAB"

create existing table ORF_TLAX
(
ID_ORFANATORIO int,
ID_ESTADO int,
NOMBRE_ORFANATORIO varchar(50),
DOM_ORFANATORIO varchar(50)
)
external table at "ASEREPLICADO.UNICEF_BDD.dbo.ORF_TLAX"

--Creación de la vista ORFANATORIOS
create view ORFANATORIOS
as
(select * from ORF_TAB)
union
(select * from ORF_TLAX)
union
(select * from ORF_VER)

--Creación de procedimiento para insertar datos en la vista ORFANATORIOS
create procedure inserta_orfanatorios (@ID_ORFANATORIO int,@ID_ESTADO int,@NOMBRE_ORFANATORIO varchar(50),@DOM_ORFANATORIO varchar(50))
as
begin
declare @NOMBRE_ESTADO varchar(50)
set @NOMBRE_ESTADO = (select NOMBRE_ESTADO from ESTADOS where ID_ESTADO=@ID_ESTADO)

IF (UPPER(@NOMBRE_ESTADO)=UPPER('VERACRUZ')) 
	INSERT INTO ORF_VER(ID_ORFANATORIO,ID_ESTADO,NOMBRE_ORFANATORIO,DOM_ORFANATORIO) VALUES(@ID_ORFANATORIO,@ID_ESTADO,@NOMBRE_ORFANATORIO,@DOM_ORFANATORIO)
	else
    IF (UPPER(@NOMBRE_ESTADO)=UPPER('TLAXCALA'))
        INSERT INTO ORF_TLAX(ID_ORFANATORIO,ID_ESTADO,NOMBRE_ORFANATORIO,DOM_ORFANATORIO) VALUES(@ID_ORFANATORIO,@ID_ESTADO,@NOMBRE_ORFANATORIO,@DOM_ORFANATORIO)
    else
        IF (UPPER(@NOMBRE_ESTADO)=UPPER('TABASCO'))
           INSERT INTO ORF_TAB(ID_ORFANATORIO,ID_ESTADO,NOMBRE_ORFANATORIO,DOM_ORFANATORIO) VALUES(@ID_ORFANATORIO,@ID_ESTADO,@NOMBRE_ORFANATORIO,@DOM_ORFANATORIO)               
end;

--Creación de trigger para insertar datos en la vista ORFANATORIOS
create trigger trgr_orfanatorios on ORFANATORIOS
instead of insert as
declare @ID_ORFANATORIO int
declare @ID_ESTADO int
declare @NOMBRE_ORFANATORIO varchar(50)
declare @DOM_ORFANATORIO CHAR(1)
begin
select @ID_ORFATANTORIO=ID_ORFANATORIO,@ID_ESTADO=ID_ESTADO,@NOMBRE_ORFANATORIO=NOMBRE_ORFANATORIO,@DOM_ORFANATORIO=DOM_ORFANATORIO from inserted
exec inserta_orfanatorios @ID_ORFANATORIO,@ID_ESTADO,@NOMBRE_ORFANATORIO,@DOM_ORFANATORIO
end

--Borrar orfanatorios
create procedure borra_orfanatorios (@ID_ORFANATORIO int,@ID_ESTADO int,@NOMBRE_ORFANATORIO varchar(50),@DOM_ORFANATORIO varchar(50))
as
begin
declare @NOMBRE_ESTADO varchar(50)
set @NOMBRE_ESTADO = (select NOMBRE_ESTADO from ESTADOS where ID_ESTADO=@ID_ESTADO)

IF (UPPER(@NOMBRE_ESTADO)=UPPER('VERACRUZ')) 
	delete from ORF_VER where ID_ORFANATORIO=@ID_ORFANATORIO and ID_ESTADO=@ID_ESTADO
	else
    IF (UPPER(@NOMBRE_ESTADO)=UPPER('TLAXCALA'))
        delete from ORF_TLAX where ID_ORFANATORIO=@ID_ORFANATORIO and ID_ESTADO=@ID_ESTADO
    else
        IF (UPPER(@NOMBRE_ESTADO)=UPPER('TABASCO'))
           delete from ORF_TAB where ID_ORFANATORIO=@ID_ORFANATORIO and ID_ESTADO=@ID_ESTADO
end;

create trigger trgr_borra_orfanatorios on ORFANATORIOS
instead of delete as
declare @ID_ORFANATORIO int
declare @ID_ESTADO int
declare @NOMBRE_ORFANATORIO varchar(50)
declare @DOM_ORFANATORIO CHAR(1)
begin
select @ID_ORFATANTORIO=ID_ORFANATORIO,@ID_ESTADO=ID_ESTADO,@NOMBRE_ORFANATORIO=NOMBRE_ORFANATORIO,@DOM_ORFANATORIO=DOM_ORFANATORIO from deleted
exec borra_orfanatorios @ID_ORFANATORIO,@ID_ESTADO,@NOMBRE_ORFANATORIO,@DOM_ORFANATORIO
end


--Creación de las tablas que componen la vista DIRECTORES
create table DIRECTORES_VER(
ID_DIRECTOR int,
ID_ORFANATORIO int,
FECHA_NACIMIENTO date,
NOMBRE_DIRECTOR varchar(50)
)

--Llaves Primarias, foraneas y reglas de negocio
alter table DIRECTORES_VER add primary key (ID_DIRECTOR)

alter table DIRECTORES_VER add foreign key (ID_ORFANATORIO) referenceS ORF_VER (ID_ORFANATORIO)

--Creación de procedimientos 

create procedure in_directores_ver
@ID_DIRECTOR int,
@ID_ORFANATORIO int,
@FECHA_NACIMIENTO date,
@NOMBRE_DIRECTOR varchar(50)
AS
insert into DIRECTORES_VER
values (@ID_DIRECTOR,@ID_ORFANATORIO,@FECHA_NACIMIENTO,@NOMBRE_DIRECTOR)


--Creación de procedimientos remotos  para la vista DIRECTORES 
create existing table in_directores_tab
(
ID_DIRECTOR int,
ID_ORFANATORIO int,
FECHA_NACIMIENTO date,
NOMBRE_DIRECTOR varchar(50)
)
external procedure at "ASEREPLICADO.UNICEF_BDD.dbo.in_directores_tab"

create existing table in_directores_tlax
(
ID_DIRECTOR int,
ID_ORFANATORIO int,
FECHA_NACIMIENTO date,
NOMBRE_DIRECTOR varchar(50)
)
external procedure at "ASEREPLICADO.UNICEF_BDD.dbo.in_directores_tlax"

--Creación de las proxytables para la vista DIRECTORES
create existing table DIRECTORES_TAB
(
ID_DIRECTOR int,
ID_ORFANATORIO int,
FECHA_NACIMIENTO date,
NOMBRE_DIRECTOR varchar(50)
)
external table at "ASEREPLICADO.UNICEF_BDD.dbo.DIRECTORES_TAB"

create existing table DIRECTORES_TLAX
(
ID_DIRECTOR int,
ID_ORFANATORIO int,
FECHA_NACIMIENTO date,
NOMBRE_DIRECTOR varchar(50)
)
external table at "ASEREPLICADO.UNICEF_BDD.dbo.DIRECTORES_TLAX"

--CREACION DE VISTAS 

create view DIRECTORES
as
(
select * from DIRECTORES_VER
union
select * from DIRECTORES_TAB
union
select * from DIRECTORES_TLAX
)







--Creación de las tablas que componen la vista HUERFANOS
create table HUER_VER(
ID_HUERFANO int,
NOMBRE_HUERFANO varchar(50),
SEXO_HUERFANO char(1),
ID_ORFANATORIO int,
ADOPTADO bit
)

--Llaves primarias, foraneas y reglas de negocio
alter table HUER_VER add primary key (ID_HUERFANO)

alter table HUER_VER add foreign key (ID_ORFANATORIO) references ORF_VER(ID_ORFANATORIO)

--Creación de procedimientos HUERFANOS
CREATE PROCEDURE in_huerver
@ID_HUERFANO int,
@NOMBRE_HUERFANO varchar(50),
@SEXO_HUERFANO CHAR(1),
@ID_ORFANATORIO INT,
@ADOPTADO BIT
AS
insert into HUER_VER
values (@ID_HUERFANO,@NOMBRE_HUERFANO,@SEXO_HUERFANO,@ID_ESTADO,@ADOPTADO)

--Definicion del procedimiento remoto
create existing table in_huertab
(
ID_HUERFANO int,
NOMBRE_HUERFANO varchar(50),
SEXO_HUERFANO CHAR(1),
ID_ORFANATORIO INT,
ADOPTADO BIT
)
external procedure at "ASEREPLICADO.UNICEF_BDD.dbo.in_huertab"

create existing table in_huertlax
(
ID_HUERFANO int,
NOMBRE_HUERFANO varchar(50),
SEXO_HUERFANO CHAR(1),
ID_ORFANATORIO INT,
ADOPTADO BIT
)
external procedure at "ASEREPLICADO.UNICEF_BDD.dbo.in_huertlax"

--Creación de proxy tables HUERFANOS
create existing table HUER_TAB
(
ID_HUERFANO int,
NOMBRE_HUERFANO varchar(50),
SEXO_HUERFANO CHAR(1),
ID_ORFANATORIO INT,
ADOPTADO BIT
)external table at "ASEREPLICADO.UNICEF_BDD.dbo.HUER_TAB"

create existing table HUER_TLAX
(
ID_HUERFANO int,
NOMBRE_HUERFANO varchar(50),
SEXO_HUERFANO CHAR(1),
ID_ORFANATORIO INT,
ADOPTADO BIT
)external table at "ASEREPLICADO.UNICEF_BDD.dbo.HUER_TLAX"



--Creación de la vista huerfanos
create view HUERFANOS
as
(select * from HUER_VER)
union
(select * from HUER_TAM)
union
(select * from HUER_TLAX)


--Creación de procedimiento para insertar en la vista HUERFANOS
create procedure inserta_huerfano(@ID_HUERFANO int,@NOMBRE_HUERFANO varchar(50), @SEXO_HUERFANO char(1), @ID_ORFANATORIO int, @ADOPTADO bit)
as
begin
declare @NOMBRE_ESTADO varchar(30)
set @NOMBRE_ESTADO = (select E.NOMBRE_ESTADO from ESTADO E, ORFANATORIO F where F.ID_ORFANATORIO=@ORFANATORIO and E.ID_ESTADO=F.ID_ESTADO )
IF (UPPER(@NOMBRE_ESTADO)=UPPER('VERACRUZ')) 
INSERT INTO HUER_VER(ID_HUERFANO, NOMBRE_HUERFANO, SEXO_HUERFANO, ID_ORFANATORIO, ADOPTADO) VALUES(@ID_HUERFANO,@NOMBRE_HUERFANO, @SEXO_HUERFANO, @ID_ESTADO, @ADOPTADO)
else 
IF (UPPER(@NOMBRE_ESTADO)=UPPER('TLAXCALA')) 
INSERT INTO HUER_TLAX(ID_HUERFANO, NOMBRE_HUERFANO, SEXO_HUERFANO, ID_ORFANATORIO, ADOPTADO) VALUES(@ID_HUERFANO,@NOMBRE_HUERFANO, @SEXO_HUERFANO, @ID_ESTADO, @ADOPTADO) 
else 
IF (UPPER(@NOMBRE_ESTADO)=UPPER('TABASCO')) 
INSERT INTO HUER_TAB(ID_HUERFANO, NOMBRE_HUERFANO, SEXO_HUERFANO, ID_ORFANATORIO, ADOPTADO) VALUES(@ID_HUERFANO,@NOMBRE_HUERFANO, @SEXO_HUERFANO, @ID_ESTADO, @ADOPTADO)
end


--Creación del trigger para insertar datos en la vista HUERFANOS
create trigger trgr_huerfanos on HUERFANOS
instead of insert as
declare @ID_HUERFANO int
declare @NOMBRE_HUERFANO varchar(50)
declare @SEXO_HUERFANO CHAR(1)
declare @ID_ORFANATORIO INT
declare @ADOPTADO bit
begin
select @ID_HUERFANO=ID_HUERFANO,@NOMBRE_HUERFANO=NOMBRE_HUERFANO, @SEXO_HUERFANO=SEXO_HUERFANO, @ID_ORFANATORIO=ID_ORFANATORIO, @ADOPTADO=ADOPTADO
from inserted
exec inserta_huerfano @ID_HUERFANO, @NOMBRE_HUERFANO, @SEXO_HUERFANO,@ID_ORFANATORIO,@ADOPTADO
end





--Creación de la tabla ENFERMEDADES
create table ENFERMEDADES(
ID_ENFERMEDAD int,
NOMBRE_ENFERMEDAD varchar(50),
INDICE_MORTALIDAD int
)
--Llaves primarias, foraneas y reglas de negocio
alter table ENFERMEDADES add primary key(ID_ENFERMEDAD)

--Creación de procedimientos ENFERMEDADES
CREATE PROCEDURE in_enfermedades
@ID_ENFERMEDAD int,
@NOMBRE_ENFERMEDAD varchar(50),
@INDICE_MORTALIDAD int
AS
insert into ENFERMEDADES
values (@ID_ENFERMEDAD,@NOMBRE_ENFERMEDAD,@INDICE_MORTALIDAD)

--Inserta enfermedades
create procedure inserta_enfermedades (@ID_ENFERMEDAD int,@NOMBRE_ENFERMEDAD varchar(50),@INDICE_MORTALIDAD int)
as
begin
	insert into ENFERMEDADES(ID_ENFERMEDAD, NOMBRE_ENFERMEDAD, INDICE_MORTALIDAD) VALUES(@ID_ENFERMEDAD,@NOMBRE_ENFERMEDAD,@INDICE_MORTALIDAD) 
end;






--Creación de las tablas que componen la vista ADOPTADOS
create table ADOPTADOS_VER(
ID_HUERFANO int,
ID_HABITANTE int 
)

--Llaves Primarias, foraneas y reglas de negocio
alter table ADOPTADOS_VER add primary key (ID_HABITANTE,ID_HUERFANO)

alter table ADOPTADOS_VER add foreign key (ID_HUERFANO) references HUER_VER (ID_HUERFANO)

--Creación de procedimientos almacenados
CREATE PROCEDURE in_adoptado_ver
@ID_HABITANTE int,
@ID_HUERFANO int
AS
insert into ADOPTADOS_VER
values (@ID_HABITANTE,@ID_HUERFANO)

--Creación de procedimientos remotos  para la vista ADOPTADOS
create existing table in_adoptado_tab
(
ID_HUERFANO int,
ID_HABITANTE int

)
external procedure at "ASEREPLICADO.UNICEF_BDD.dbo.in_adoptado_tab"

create existing table in_adoptado_tlax
(
ID_HABITANTE int,
ID_HUERFANO int
)
external procedure at "ASEREPLICADO.UNICEF_BDD.dbo.in_adoptado_tlax"

--Creación de las proxytables para la vista ADOPTADOS
create existing table ADOPTADOS_TAB
(
ID_HABITANTE int,
ID_HUERFANO int
)
external table at "ASEREPLICADO.UNICEF_BDD.dbo.ADOPTADOS_TAB"

create existing table ADOPTADOS_TLAX
(
ID_HABITANTE int,
ID_HUERFANO int
)
external table at "ASEREPLICADO.UNICEF_BDD.dbo.ADOPTADOS_TLAX"

create view ADOPTADOS 
as
(
select * from ADOPTADOS_VER
union
select * from ADOPTADOS_TAB
union
select * from ADOPTADOS_TLAX
)




--Creación de las tablas que conforman la vista HABITANTES
create table HAB_VER(
ID_HABITANTE int,
NOMBRE_HABITANTE varchar(50),
SEXO_HABITANTE char(1),
DOMICILIO_HABITANTE VARCHAR(50),
ID_ESTADO int
)

--Creación de llaves primarias, foraneas y constraints
alter table HAB_VER add primary key (ID_HABITANTE)
alter table HAB_VER add foreign key (ID_ESTADO) references ESTADO_VER(ID_ESTADO)

--Creación de procedimientos almacenados
CREATE PROCEDURE in_habver
@ID_HABITANTE int,
@NOMBRE_HABITANTE varchar(50),
@SEXO_HABITANTE CHAR(1),
@DOMICILIO_HABITANTE VARCHAR(50),
@ID_ESTADO INT
AS
insert into HAB_VER
values (@ID_HABITANTE,@NOMBRE_HABITANTE,@SEXO_HABITANTE,@DOMICILIO_HABITANTE,@ID_ESTADO)

--Definicion del procedimiento remoto
create existing table in_habtab
(
ID_HABITANTE int,
NOMBRE_HABITANTE varchar(50),
SEXO_HABITANTE CHAR(1),
DOMICILIO_HABITANTE VARCHAR(50),
ID_ESTADO INT
)
external procedure at "ASEREPLICADO.UNICEF_BDD.dbo.in_habtab"

create existing table in_habtlax
(
ID_HABITANTE int,
NOMBRE_HABITANTE varchar(50),
SEXO_HABITANTE CHAR(1),
DOMICILIO_HABITANTE VARCHAR(50),
ID_ESTADO INT
)
external procedure at "ASEREPLICADO.UNICEF_BDD.dbo.in_habtlax"

--Creación de proxy tables
create existing table HAB_TAB
(
ID_HABITANTE int,
NOMBRE_HABITANTE varchar(50),
SEXO_HABITANTE CHAR(1),
DOMICILIO_HABITANTE VARCHAR(50),
ID_ESTADO INT
)external table at "ASEREPLICADO.UNICEF_BDD.dbo.HAB_TAB"

create existing table HAB_TLAX
(
ID_HABITANTE int,
NOMBRE_HABITANTE varchar(50),
SEXO_HABITANTE CHAR(1),
DOMICILIO_HABITANTE VARCHAR(50),
ID_ESTADO INT
)external table at "ASEREPLICADO.UNICEF_BDD.dbo.HAB_TLAX"

--Creación de vista HABITANTES
create view HABITANTES
as
(select * from HAB_TLAX)
union
(select * from HAB_TAB)
union
(select * from HAB_VER)

--Creación de procedimiento para insertar datos en la vista HABITANTES
create procedure inserta_habitante(@ID_HABITANTE int,@NOMBRE_HABITANTE varchar(50), @SEXO_HABITANTE char(1), @DOMICILIO_HABITANTE varchar(50), @ID_ESTADO int)
as
begin
declare @NOMBRE_ESTADO varchar(30)
set @NOMBRE_ESTADO = (select NOMBRE_ESTADO from ESTADOS where ID_ESTADO=@ID_ESTADO)
IF (UPPER(@NOMBRE_ESTADO)=UPPER('VERACRUZ')) 
INSERT INTO HAB_VER(ID_HABITANTE, NOMBRE_HABITANTE, SEXO_HABITANTE, DOMICILIO_HABITANTE, ID_ESTADO) VALUES(@ID_HABITANTE,@NOMBRE_HABITANTE, @SEXO_HABITANTE, @DOMICILIO_HABITANTE, @ID_ESTADO)
else 
IF (UPPER(@NOMBRE_ESTADO)=UPPER('TLAXCALA')) 
INSERT INTO HAB_TLAX(ID_HABITANTE, NOMBRE_HABITANTE, SEXO_HABITANTE, DOMICILIO_HABITANTE, ID_ESTADO) VALUES(@ID_HABITANTE,@NOMBRE_HABITANTE, @SEXO_HABITANTE, @DOMICILIO_HABITANTE, @ID_ESTADO)
else 
IF (UPPER(@NOMBRE_ESTADO)=UPPER('TABASCO')) 
INSERT INTO HAB_TAB(ID_HABITANTE, NOMBRE_HABITANTE, SEXO_HABITANTE, DOMICILIO_HABITANTE, ID_ESTADO) VALUES(@ID_HABITANTE,@NOMBRE_HABITANTE, @SEXO_HABITANTE, @DOMICILIO_HABITANTE, @ID_ESTADO)
end;

--Creación del trigger para insertar datos en la vista HABITANTES
create trigger trgr_habitantes on HABITANTES
instead of insert as
declare @ID_HABITANTE int
declare @NOMBRE_HABITANTE varchar(50)
declare @SEXO_HABITANTE CHAR(1)
declare @DOMICILIO_HABITANTE VARCHAR(50)
declare @ID_ESTADO INT
begin
select @ID_HABITANTE=ID_HABITANTE,@NOMBRE_HABITANTE=NOMBRE_HABITANTE, @SEXO_HABITANTE=SEXO_HABITANTE, @DOMICILIO_HABITANTE=DOMICILIO_HABITANTE, @ID_ESTADO=ID_ESTADO
from inserted
exec inserta_habitante @ID_HABITANTE, @NOMBRE_HABITANTE, @SEXO_HABITANTE, @DOMICILIO_HABITANTE,@ID_ESTADO 
end






--Creación de las tablas que componen la vista PADECE_ENFERMEDADES
create table PADECEHUERVER(
ID_ENFERMEDAD int,
ID_HUERFANO int,
DIAS_ENFERMEDAD int
)

--Llaves primarias, foraneas y reglas de negocio
alter table PADECEHUERVER add primary key(ID_ENFERMEDAD,ID_HUERFANO)

alter table PADECEHUERVER add foreign key(ID_ENFERMEDAD) references ENFERMEDADES(ID_ENFERMEDAD)
alter table PADECEHUERVER add foreign key(ID_HUERFANO) references HUER_VER(ID_HUERFANO)

--Creación de procedimientos almacenados para cada fragmento de la vista PADECE_ENFERMEDADES

CREATE PROCEDURE in_padecehuerver
@ID_ENFERMEDAD int,
@ID_HUERFANO int,
@DIAS_ENFERMEDAD int
AS
insert into PADECEHUERVER
values (@ID_ENFERMEDAD,@ID_HUERFANO,@DIAS_ENFERMEDAD)

--Creación de procedimientos remotos para la vista PADECE_ENFERMEDADES
create existing table in_padecehuertab
(
ID_ENFERMEDAD int,
ID_HUERFANO int,
DIAS_ENFERMEDAD int
)
external procedure at "ASEREPLICADO.UNICEF_BDD.dbo.in_padecehuertab"

create existing table in_padecehuertlax
(
ID_ENFERMEDAD int,
ID_HUERFANO int,
DIAS_ENFERMEDAD int
)
external procedure at "ASEREPLICADO.UNICEF_BDD.dbo.in_padecehuertlax"


--Creación de las proxytables para la vista PADECE_ENFERMEDADES
create existing table PADECEHUERTAB
(
ID_ENFERMEDAD int,
ID_HUERFANO int,
DIAS_ENFERMEDAD int
)
external table at "ASEREPLICADO.UNICEF_BDD.dbo.PADECEHUERTAB"

create existing table PADECEHUERTLAX
(
ID_ENFERMEDAD int,
ID_HUERFANO int,
DIAS_ENFERMEDAD int
)
external table at "ASEREPLICADO.UNICEF_BDD.dbo.PADECEHUERTLAX"

--Creación de vista en PADECE_ENFERMEDADES
create view PADECE_ENFERMEDADES
as
(select * from PADECEHUERTAB)
union
(select * from PADECEHUERTLAX)
union
(select * from PADECEHUERVER)